<?php
/**
 * Created by PhpStorm.
 * User: 轶杰
 * Date: 2016/4/16
 * Time: 22:48
 */

//创建画布
/**
 * 通过GD库做验证码
 * @param int $type 验证码类型 1数字 2字母 3数字字母混合
 * @param int $type
 * @param int $length
 * @param int $pixel
 * @param int $line
 */
function verifyImage($type = 1,$length = 4,$pixel = 10,$line = 5)
{
	$height = 30;
	$width = 80;
	$sess_name = "verify";
	$image = imagecreatetruecolor($width, $height);
	$white = imagecolorallocate($image, 255, 255, 255);
	$black = imagecolorallocate($image, 0, 0, 0);
	//填充矩形填充画布
	imagefilledrectangle($image, 1, 1, $width - 2, $height - 2, $white);
	$chars = buildRandomString($type, $length);
	if(!isset($_SESSION)) {
		session_start();
	}
	$_SESSION[$sess_name] = $chars;
	$fontfiles = array("1.ttf", "2.ttf", "3.ttf", "4.ttf", "5.ttf", "6.otf");
	for ($i = 0; $i < $length; $i++) {
		$size = mt_rand(14, 18);
		$angle = mt_rand(-15, 15);
		$x = 5 + $i * $size;
		$y = mt_rand(20, 26);
		$color = imagecolorallocate($image, mt_rand(50, 90), mt_rand(80, 200), mt_rand(90, 180));
		$fontfile = dirname(__FILE__)."/../source/" . $fontfiles[mt_rand(0, count($fontfiles) - 1)];
		$text = substr($chars, $i, 1);
		imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);
	}

	if ($pixel) {
		//干扰元素
		for ($i = 0; $i < $pixel; $i++) {
			imagesetpixel($image, mt_rand(0, $width - 1), mt_rand(0, $height - 1), $black);
		}
	}

	if ($line) {
		for ($i = 1; $i < $line; $i++) {
			$color = imagecolorallocate($image, mt_rand(50, 90), mt_rand(80, 200), mt_rand(90, 180));
			imageline($image, mt_rand(0, $width - 1), mt_rand(0, $height - 1), mt_rand(0, $width - 1), mt_rand(0, $height - 1), $color);
		}
	}
	ob_clean();
	header("content-type:image/png");
	imagepng($image);
	imagedestroy($image);
}
function buildRandomString($type=1,$length=4)
{
	if ($type == 1) {
		$chars = join("", range(0, 9));
	} elseif ($type == 2) {
		$chars = join("", array_merge(range("a", "z"), range("A", "Z")));
	} elseif ($type == 3) {
		$chars = join("", array_merge(range("a", "z"), range("A", "Z"), range(0, 9)));
	}
	if ($length > strlen($chars)) {
		exit("字符串长度不够");
	}
	$chars = str_shuffle($chars);
	return substr($chars, 0, $length);
}